package com.结构型模型.L享元模式;

import java.util.HashMap;

/**
 * 提供了一个工厂类（BoxFactory），用来管理享元对象（也就是AbstractBox子类对象），该工厂 类对象只需要一个，所以可以使用单例模式。并给工厂类提供一个获取形状的方法。
 */
public class BoxFactory {
    private static HashMap<String,AbstractBox> map;
    //私有构造方法
    private BoxFactory(){
        map=new HashMap<String,AbstractBox>();
        AbstractBox iBox = new IBox();
        AbstractBox lBox = new LBox();
        AbstractBox oBox = new OBox();
        map.put("I", iBox);
        map.put("L", lBox);
        map.put("O", oBox);

    }

    public static final BoxFactory getInstance(){
        return SingletonHolder.INSTANCE;
    }

    private static class SingletonHolder{
        private static final BoxFactory INSTANCE=new BoxFactory();

    }

    public AbstractBox getBox(String key){
        return map.get(key);
    }


}
